#include "operacion.h"
#include "udp.h"
#include <iostream>
#include <string.h>
using namespace std;

void getnum(double &a, double &b, Udp serv){
    char comand1[]="Introduce el primer número";
    char comand2[]="Introduce el segundo número";
    char *buffer;
    //bzero(buffer,50);
    serv.enviar(comand1);
    buffer=serv.recibir();
    a=atoi(buffer);
   // bzero(buffer,50);
    serv.enviar(comand2);
    buffer=serv.recibir();
    b=atoi(buffer);

}

int main(int argc, char *argv[]){
    if (argc < 1) {
        perror("ERROR, no port provided\n");
        exit(1);
    }
    int c=1, puerto;
    puerto=atoi(argv[1]);
    double a, b, res;
    char inicio[]="Que desea hacer: Suma Resta Raiz Exponencial o Salir";
    char *buffer;
   // bzero(buffer,256);
    Udp serv;
    Operacion oper;
    buffer=serv.recibir(puerto);
    if(strcmp(buffer,"password")==0){
        while (c==1){
           // bzero(buffer,256);
            serv.enviar(inicio);
            buffer=serv.recibir();
                if(strcmp(buffer,"Suma")==0){
                    getnum(a,b,serv);
                    res=oper.suma(a,b);
                    char ans[sizeof(res)];
                    memcpy(&ans,&res,sizeof(res));
                    serv.enviar(ans);
                }
                else if(strcmp(buffer,"Resta")==0){
                    getnum(a,b,serv);
                    res=oper.resta(a,b);
                    char ans[sizeof(res)];
                    memcpy(&ans,&res,sizeof(res));
                    serv.enviar(ans);
                }
                else if(strcmp(buffer,"Raiz")==0){
                    getnum(a,b,serv);
                    res=oper.raiz(a,b);
                    char ans[sizeof(res)];
                    memcpy(&ans,&res,sizeof(res));
                    serv.enviar(ans);
                }
                else if(strcmp(buffer,"Exponencial")==0){
                    getnum(a,b,serv);
                    int d;
                    d=b;
                    res=oper.exp(a,d);
                    char ans[sizeof(res)];
                    memcpy(&ans,&res,sizeof(res));
                    serv.enviar(ans);
                }
                else if(strcmp(buffer,"Salir")==0){
                    char fin[]="conexión terminada";
                    serv.enviar(fin);
                    c=0;
                }
        }
     }
   return 0;
}
